<?php

// выставляем уровень уведомлениях об ошибках именно здесь, т.к. это единственный
// файл, который гарантированно будет подключен при входе в приложение из любой
// точки. при этом .htaccss не подходит, т.к. наименования констант E_* меняются
// от версии к версии
error_reporting(E_ALL | E_STRICT);

// SCRIPT_URI выставляется не на всех серверах, пока что закономерность не понятна
if (isset($_SERVER['REQUEST_URI']) && !isset($_SERVER['SCRIPT_URI'])) {
    $_SERVER['SCRIPT_URI'] = 'http' . (isset($_SERVER['HTTPS']) ? 's' : '')
        . '://' . $_SERVER['HTTP_HOST'] . current(explode('?', $_SERVER['REQUEST_URI']));
}

/**
 * Добавляет указанные пути в include_path. Делаем так, потому что в режиме CGI
 * директива в .htaccess будет проигнорирована, и к тому же ее нельзя написать
 * независимой от платформы.
 *
 * @access  public
 * @param   string  $path1[, string …]
 */
function set_include_paths() {
    $paths = func_get_args();
    set_include_path(implode(PATH_SEPARATOR, array_map('realpath', $paths)));
}

// путь к репозиторию ядра
define('KERNEL_REPOSITORY', KERNEL_PATH . DIRECTORY_SEPARATOR . 'modules');

// путь к репозиторию проекта
define('PROJECT_REPOSITORY', SITE_ROOT . DIRECTORY_SEPARATOR . '_modules');

// подключаем библиотеки
set_include_paths
(
    // модули ядра — в самом начале, чтобы никому не вздумалось подменить ресурс
    // ядра аналогичным в проекте
    KERNEL_REPOSITORY,

    // прикладные модули
    PROJECT_REPOSITORY,

    // библиотеки третьих сторон
    KERNEL_PATH . '/lib'
);

// сам загрузчик подключаем руками. без этого никак
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

// функции общего назначения
require_once 'utils.inc.php';

session_start();
